package com.yao.system.controller;


import com.yao.system.annotation.MyAnnotation;
import com.yao.system.entity.Interview;
import com.yao.system.entity.Job;
import com.yao.system.entity.Result;
import com.yao.system.service.IInterviewService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author 霖
 * @since 2024-04-15
 */
@CrossOrigin
@RestController
@RequestMapping("/interview")
@RequiredArgsConstructor
public class InterviewController {

    private final IInterviewService interviewService;

    /**
     * 新增面试邀请
     * @param interview
     * @return
     */
    @MyAnnotation
    @PostMapping("/add")
    public Result addInterview(@RequestBody Interview interview){
        return interviewService.addInterview(interview);
    }

    /**
     * 查询 公司发起的邀请面试记录列表
     * @param page
     * @param size
     * @return
     */
    @MyAnnotation
    @GetMapping("/list/{page}/{size}")
    public Result getInterviewList(@PathVariable(value = "page", required = false) Integer page,
                                   @PathVariable(value = "size", required = false) Integer size){
        return interviewService.getInterviewList(page,size);
    }

    /**
     * 修改面试记录的状态
     * @return
     */
    @MyAnnotation
    @PostMapping("/update/{id}/{status}")
    public Result updateInterviewStatus(@PathVariable(value = "id") Long id,
                                        @PathVariable(value = "status") Integer status){
        return interviewService.updateInterviewStatus(id,status);
    }

    /**
     * 查询 普通用户收到的面试邀请列表
     */
    @MyAnnotation
    @GetMapping("/user/list/{page}/{size}")
    public Result getUserInterviewList(@PathVariable(value = "page", required = false) Integer page,
                                   @PathVariable(value = "size", required = false) Integer size){
        return interviewService.getUserInterviewList(page,size);
    }



    /**
     * 管理员查询面试记录
     * @return
     */
    @MyAnnotation
    @GetMapping("/admin-list/{page}/{size}")
    public Result queryInterviewList(@PathVariable("page")Integer page,
                               @PathVariable("size")Integer size){
        return interviewService.queryInterviewList(page,size);
    }

    /**
     * 管理员删除面试邀请
     * @return
     */
    @MyAnnotation
    @PostMapping("/admin-delete")
    public Result deleteInterviewAdmin(@RequestBody Interview interview){
        interviewService.removeById(interview);
        return Result.ok("删除成功");
    }

}
